/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package pers.sakurasora.lesson.dao;

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.SelectKey;
import pers.sakurasora.lesson.entity.BizOrder;

/*--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 * 使用Mybatis的时候，Mybatis根据数据库的字段（查询出来的字段名）找到对应实体类的属性，通过set方法对属性进行注入                                                                                         *
 *                                                                                                                                                                                                       *
 * 注解配置select,当实体属性与数据库表中的字段不匹配时:                                                                                                                                                  *
 *      1. （如实体类属性名:userName,数据库字段名:name,则：）select name as user_name from 表名;                                                                                                         *
 *      2. （如实体类属性名:id,userName,数据库字段名:id,name,则：）@Results({@Result(id=true,property="id",column="id"),@Result(property="name",column="user_name")}) --(id=true|false ：表示是否为主键) *
 *                                                                                                                                                                                                       *
 * 当我们需要马上获取添加的数据的主键值时（主键是一个字段增长列）：                                                                                                                                      *
 *      @SelectKey(statement = "SELECT LAST_INSERT_ID()",keyProperty = "id",before = false,resultType = Integer.class)                                                                                   *
 *      statement：表示执行的命令； keyProperty：表示数据存放的属性(实体类中的)；   before：表示执行前获取还是执行后获取；  resultType：返回的数据类型                                                   * 
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/

/**
 * @author SakuraSora
 * @Email 1468071675@qq.com
 * @DateTime 2018-11-5 8:53:26
 *
 * @Description
 *              DAO层接口--订单表
 */
public interface OrderDao {
    
    @Insert("insert into biz_order(name,order_date,user_id) values(#{name},#{orderDate},#{userId})")
    @SelectKey(statement = "SELECT LAST_INSERT_ID()",keyProperty = "id",before = false,resultType = Integer.class) // 把插入后的id值赋给实体类的id属性
    int insert(BizOrder order);
}
